package com.bigdata;

import org.junit.Test;

import java.io.*;

public class ObjectSteamDemo {

    // 反序列化
    @Test
    public void test2() throws IOException, ClassNotFoundException {
        ObjectInputStream ois = new ObjectInputStream(
                new FileInputStream("obj_stream/base.txt"));

        // read操作需要和write保持一致的顺序
        System.out.println(ois.readInt());
        System.out.println(ois.readUTF());

        // 序列化的Person
        Object obj = ois.readObject();
        // 强转
        Person person = (Person) obj;

        System.out.println(person);

        // java.io.EOFException
        // Object o1 = ois.readObject();


        ois.close();

    }

    // 序列化
    @Test
    public void test1() throws IOException {
        // 对象的输出流, 写出的是二进制文件, 使用记事本打开是看不懂
        ObjectOutputStream oos = new ObjectOutputStream(
                new FileOutputStream("obj_stream/base.txt"));

        // 序列化的操作, 基本数据类型的包装类都实现了 Serializable
        // 所以序列化不会报错
        oos.writeInt(1);
//        oos.writeShort(2);
//        oos.writeBoolean(true);
        oos.writeUTF("hello");

        // 序列化自定义的类型, writeObject
        /// 目的是序列化对象的属性
        Person person = new Person();
        person.setName("郭靖");
        person.setAge(40);
        person.setHeight(178);
        person.setWeight(70);
        person.setHobby("足球");
        oos.writeObject(person);

//        oos.flush();
//
//        oos.close();
    }
}